using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.EventSystems;

public class UI_CraftList : MonoBehaviour, IPointerDownHandler
{
    // 序列化字段，用于在编辑器中设置制造槽的父对象
    [SerializeField] private Transform craftSlotParent;
    // 序列化字段，用于在编辑器中设置制造槽的预制件
    [SerializeField] private GameObject craftSlotPrefab;

    // 序列化字段，用于在编辑器中设置制造装备的数据列表
    [SerializeField] private List<ItemData_Equipment> craftEquipment;

    // 在开始时调用，设置默认的制造窗口
    void Start()
    {
        // 获取父对象的第一个子对象，并调用其 SetupCraftList 方法
        transform.parent.GetChild(0).GetComponent<UI_CraftList>().SetupCraftList();
        // 设置默认的制造窗口
        SetupDefaultCraftWindow();
    }

    // 设置制造列表
    public void SetupCraftList()
    {
        // 销毁制造槽父对象下的所有子对象
        for (int i = 0; i < craftSlotParent.childCount; i++)
        {
            Destroy(craftSlotParent.GetChild(i).gameObject);
        }

        // 为每个制造装备数据创建一个新的制造槽
        for (int i = 0; i < craftEquipment.Count; i++)
        {
            GameObject newSlot = Instantiate(craftSlotPrefab, craftSlotParent);
            newSlot.GetComponent<UI_CraftSlot>().SetupCraftSlot(craftEquipment[i]);
        }
    }

    // 当指针按下时调用，重新设置制造列表
    public void OnPointerDown(PointerEventData eventData)
    {
        SetupCraftList();
    }

    // 设置默认的制造窗口
    public void SetupDefaultCraftWindow()
    {
        // 如果制造装备数据列表的第一个元素不为空，则设置制造窗口
        if (craftEquipment[0] != null)
            GetComponentInParent<UI>().craftWindow.SetupCraftWindow(craftEquipment[0]);
    }
}